This page was saved using WebZIP 7.1.2.1052 offline browser (Unregistered) on 09/07/08 0:47:50.
Address: http://www.instruct-online.nl/docent_pagina.php?p=6342
Title: Instruct-online.nl - Electronische Leeromgeving Instruct  •  Size: 17791

M8 - Schematechnieken en databases       2 - Gegevensanalyse met ERM    Uitgewerkt voorbeeld: bestellen

 

Hoofdstuk 2.1 Hoofdstuk 2.2 Hoofdstuk 2.3 Hoofdstuk 2.4 Hoofdstuk 2.5 Hoofdstuk 2.6 Hoofdstuk 3.1 Hoofdstuk 3.2 Hoofdstuk 3.3 Hoofdstuk 3.4 Hoofdstuk 3.5

1 - Uitgewerkt voorbeeld: bestellen
2 - Nadere analyse van het inkoopproces
3 - Entiteittypen
4 - Relatietypen en cardinaliteiten
5 - Attribuuttypen en tekstuele beschrijving

 



1 - Uitgewerkt voorbeeld: bestellen © Instruct

Omdat ERM zich het beste laat begrijpen als de theorie wordt toegepast, geven we hier een uitgewerkt voorbeeld. Het gaat over een service-centrum van een scholengemeenschap, dat onder meer kantoorartikelen en syllabi verkoopt. Het voorbeeld gaat over het proces Bestellen. Dit proces is in het volgende Data Flow Diagram schematisch afgebeeld.



DFD van het proces Bestellen.

 

 


 



2 - Nadere analyse van het inkoopproces © Instruct

  Elk product krijgt een unieke productcode. Vastgelegd worden:
  • de productomschrijving
  • de inkoopprijs
  • de verkoopprijs
  • de voorraad
Er zijn verschillende leveranciers die deze producten kunnen leveren. De leverancier wordt geïdentificeerd met een leveranciercode; verder zijn bekend:
  • naam
  • adres
  • woonplaats
  • telefoonnummer

Een bestelling wordt genoteerd op een bestelformulier (papier of online) van de beheerder van het service-centrum. Dit bestelformulier bevat:

  • een bestelnummer (uniek)
  • de besteldatum
  • de adressering van de leverancier
  • de naam van de contactpersoon binnen het service-centrum
Verder worden op het bestelformulier voor elk te bestellen product onder meer vermeld:
  • het bestelde aantal
  • de inkoopprijs
  • het totaalbedrag

 

 


 



3 - Entiteittypen © Instruct

  De eerste stap in het opzetten van een Entity Relationship Diagram is het bepalen van entiteittypen. Uit de beschrijving en het DFD komen al twee entiteittypen duidelijk naar voren:
  • Product
  • Leverancier
Van deze twee entiteittypen kan misschien zelfs al direct de tekstuele beschrijving worden gegeven. Daarmee wachten we echter nog even; eerst kijken we of er nog meer entiteittypen te vinden zijn.

Er loopt nog een gegevensstroom (het bestelformulier) van het proces ‘bestel producten’ naar de bestemming ‘leverancier’. We gaan dat bestelformulier nader analyseren.



Bestelformulier.

Op het bestelformulier is het volgende te zien:

  • Eén maal gegevens over de leverancier, één maal de datum, het bestelnummer en de naam van de contactpersoon.
  • Voor elk van de vier bestelde producten de productcode, de omschrijving, het bestelde aantal, de inkoopprijs en het totaal.
  • Eén maal het totaalbedrag van de hele bestelling.

Twee soorten gegevens
Als je het bestelformulier goed bekijkt, zie je dat er sprake is van twee soorten gegevens:

  1. gegevens over de bestelling
  2. gegevens over bestelde producten
Voor het vastleggen van gegevens over het bestelformulier zijn om deze reden twee entiteittypen nodig. We noemen deze entiteittypen:
  • Bestelling
  • Bestelregel

Dit brengt het aantal entiteittypen op vier:

  • Leverancier
  • Product
  • Bestelling
  • Bestelregel

 

 


 



4 - Relatietypen en cardinaliteiten © Instruct

  Dan gaan we nu kijken naar de samenhang tussen deze vier entiteittypen. Daarvoor moeten we weer terug naar de analyse van het inkoopproces. Een belangrijke zin daarin is:
    ‘Er zijn verschillende leveranciers die deze producten kúnnen leveren’.
Daaruit blijkt dat een bepaald product (blijkbaar) door meer dan één leverancier geleverd kan worden.

Uit het bestelformulier blijkt dat een bepaalde leverancier meer dan één product kan leveren. Dat wijst op een veel-op-veel relatie tussen de entiteittypen Product en Leverancier, met een relatietype ‘kan leveren’. Dit deel van het ERD komt er dan als volgt uit te zien:

In dit gedeelte van het ERD ligt nu vast welke leverancier ons welke producten kán leveren. Dit is van belang want als we een bestelling willen plaatsen, moeten we wel weten bij wie we dat moeten doen.

Bestelling
Het volgende aspect betreft de bestelling zelf. Deze bestaat, zoals je al gezien hebt, uit twee delen:

  1. één deel met algemene informatie over de bestelling
  2. een ander deel met informatie over de bestelde producten
Dat laatste hebben we Bestelregel genoemd. Tussen de entiteiten van de entiteittypen Bestelling en Bestelregel bestaat een één-op-veel relatie: bij één bestelling horen één of meer bestelregels. Eén bestelregel kan maar bij één bestelling horen. Het ERD met betrekking tot de bestelling ziet er als volgt uit:

Cardinaliteit en optionaliteit
De cardinaliteit geeft het één-op-veel verband weer. De optionaliteit kan wel wat uitleg gebruiken. Een bestelling is alleen maar zinvol als er ten minste één product besteld wordt. Met andere woorden: een bestelling moet ten minste één bestelregel hebben. Een bestelregel heeft geen betekenis als daar geen bestelling bij hoort. We moeten immers weten bij welke leverancier het betreffende product besteld is. Vandaar dat de optionaliteit in beide gevallen 1 is.

Een bestelling heeft enerzijds een verband met een leverancier en anderzijds een verband met de bestelde producten. Die twee verbanden zie je in het complete ERD hieronder.

Het complete ERD.

Een bestelling moet geplaatst zijn bij een leverancier. Een bestelling kan bij niet meer dan één leverancier geplaatst zijn. De cardinaliteiten tussen het entiteittype Bestelling en het relatietype ‘ontvangt’ zijn dus 1,1.

Een bestelregel moet betrekking hebben op een product. Een bestelregel kan niet meer dan één product betreffen. Daarom zijn ook tussen het entiteittype Bestelregel en het relatietype ‘betreft’ de cardinaliteiten 1,1.

Tot slot kijken we naar de cardinaliteiten tussen het relatietype ‘betreft’ en het entiteittype Product. Er hoeft voor een product geen bestelling te zijn; de optionaliteit is daarom 0. Er kunnen voor een product meer bestelregels zijn (bijvoorbeeld bij verschillende leveranciers). Dit betekent dat de cardinaliteit n is.

 

 


 



5 - Attribuuttypen en tekstuele beschrijving © Instruct

De attribuuttypen worden opgesomd in de tekstuele beschrijving. Er zijn vier entiteittypen vastgesteld:
  1. Leverancier
  2. Product
  3. Bestelling
  4. Bestelregel
Bij elk van die entiteittypen zijn attribuuttypen vastgesteld.

  • Leverancier
    • leveranciercode
    • naam, adres, postcode en woonplaats
    • telefoonnummer

  • Product
    • productcode
    • productomschrijving
    • inkoopprijs
    • verkoopprijs
    • voorraad

  • Bestelling
    • bestelnummer
    • besteldatum
    • leveranciercode
    • naam, adres, postcode en woonplaats
    • totaalbedrag
    • contactpersoon

  • Bestelregel
    • productcode
    • productomschrijving
    • besteld aantal
    • inkoopprijs
    • totaal

Het valt op dat enkele attribuuttypen twee keer voorkomen, iets wat we in een database beslist moeten vermijden. Het gaat hier om de attribuuttypen die voorkomen in de entiteittypen Bestelling en Bestelregel. In het entiteittype Bestelling zijn dit de attribuuttypen:

  • leveranciercode
  • naam, adres, postcode en woonplaats

De waarden van de attribuuttypen naam, adres, postcode en woonplaats kunnen veranderen, bijvoorbeeld als de leverancier verhuist of als deze een andere naam kiest. Veranderen deze gegevens, dan zou de wijziging op ten minste twee plaatsen in de database moeten worden aangebracht:

  1. één maal in de entiteit van het entiteittype Leverancier,
  2. één of meer keren in entiteiten van het entiteittype Bestelling.

Dit laatste is afhankelijk van het aantal bestellingen dat geplaatst is bij de betreffende leverancier. Om dit te voorkomen laten we de attribuuttypen naam, adres, postcode en woonplaats weg uit het entiteittype Bestelling.

Het attribuuttype Leveranciercode mag ook weg omdat via het relatietype ‘ontvangt’ duidelijk is bij welke leverancier de bestelling geplaatst is.

Het entiteittype Bestelregel omvat ook een aantal attribuuttypen die al beschreven zijn bij het entiteittype Product. Dat zijn:

  • productcode
  • productomschrijving
  • inkoopprijs

Identificatie
Wanneer deze attribuuttypen alledrie uit de beschrijving van het entiteittype Bestelregel verwijderd worden, ontstaat er een probleem met de identificatie. De enige attribuuttypen die overblijven, zijn Besteld aantal en Totaal. Die zijn niet geschikt om een entiteit van het entiteittype Bestelregel te identificeren.

Het blijkt nu dat het entiteittype Bestelregel bestaansafhankelijk is van zowel het entiteittype Bestelling als het entiteittype Product. De identificatie van het entiteittype Bestelling moet dan ook de combinatie van Bestelnummer en Productcode zijn.

Bestaansafhankelijkheid houdt in dat er ten behoeve van de identificatie van een entiteittype attribuuttypen ‘geleend’ worden bij een ander entiteittype.

Tekstuele beschrijving
De tekstuele beschrijving gaat nu luiden:

Entitytype Leverancier
Identifier leveranciercode
Description leveranciercode, naam, adres, postcode en woonplaats, telefoonnummer

Entitytype Product
Identifier productcode
Description productcode, productomschrijving, inkoopprijs, verkoopprijs, voorraad

Entitytype Bestelling
Identifier bestelnummer
Description bestelnummer, besteldatum, totaalbedrag, contactpersoon

Entitytype Bestelregel
Identifier bestelnummer
Description besteld_aantal, totaal